/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-09-11
 * Time: 22:53
 */
public class Solution {
    /**
     *  二分查找
     */

    public int searchInsert1(int[] nums, int target) {
        int len = nums.length;
        int left = 0;
        int right = len - 1;
        // 这里面 取 = 了, 那么 left 和 right 就不能赋值为 mid, 不然死循环
        // 并且因为取 = 了, 所以, left 最终 可能到达 len, right 最终可能到达 -1
        while (left <= right) {
            int mid = ((right-left)>>1) + left;
            if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return left;
    }


    public int searchInsert2(int[] nums, int target) {
        int len = nums.length;
        int left = 0;
        int right = len;
        // 没有取 =, 那么 left 或者 right 其中一个就可以 取值为 mid
        // 并且因为没有 取 =, 那么 left 不会到达 len , right 不会到达 -1
        while (left < right) {
            int mid = ((right-left)>>1) + left;
            if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left;
    }
}
